perm filename MINTRO.PUB[HAL,HE]2 blob
sn#128390 filedate 1974-11-06 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .NEWSEC OVERVIEW OF 'AL
C00008 ENDMK
Cā;
.NEWSEC OVERVIEW OF 'AL
.NEWSS INTRODUCTION
The development of mechanical manipulators during the Late
Middle Ages of 1948 soon led to the realization that most tasks
require position and force feedback. For the last ten years,
computers have been used as a controlling agent. This has led to
sophisticated servo programs which periodically compute a controlling
signal from comparison of current manipulator status against the
planned status.
Elementary languages have been built for the purpose of
automating tasks more lengthy than simple motions. These languages
have much the flavor of assembly languages; primitive commands
involve those necessary for planning various kinds of motions, for
controlling the execution of the computed plans, and for simple
response to error conditions.
APT is one highly successful system for the automation of
parts-machining tasks. It provides open-loop control of metal
cutting machines and allows precision cutting along curved lines and
accurate workpiece positioning. The principal failings of APT
involve its poverty of descriptive ability for complicated motions,
the resulting limitation on the type of tasks which it can
accomplish, and its restriction to metal cutting machines.
Another example of a system for manipulator control is WAVE
at Stanford. It includes two Scheinman electrical arms and software
for preparing moderately complex plans. The most impressive
accomplishment of this system has been the assembly of a water pump,
which was done with one arm, and optionally made use of visual
feedback. Further achievements have included a primitive two-arm
task: the assembly of a hinge. WAVE currently can produce
independent plans for the two arms. The only form of coordination is
achieved by halting one arm and starting the other one. The world
model contained in the system is quite limited: A small number of
hand positions can be remembered; each of these positions can be
associated with an "offset" between planned position and real
position. This information is obtained during the actual execution
of a plan, and allows run-time modification of trajectories. The
sophistication of the control structure is also limited; there are
only simple jumps, including conditionals on error states. When a
plan fails due to excessive requests on hardware ability, the user
may request the continuation of the plan. WAVE also has a clumsy
interface with SAIL, which is a high-level Algol-like language; thus,
in principal, it can take advantage of SAIL's algebraic power.
None of the currently available task-automation languages is
capable of efficiently sequencing tasks or planning other strategy
for the execution of a task; they only can translate explicit
instructions into machine-executable form. In this sense they can be
thought of as "assembly languages"; some of them are rather fancy,
with a macro facility, a few named variables, and some simple
arithmetic, but none can be called a high-level language.
The availability of new types of hardware (for example,
force-sensing wrists) and the increasing complexity of the tasks we
wish to perform, as well as the recognized failings of WAVE, have led
us to the design of a new hand language, which is called HAL. It is
a very high level language for the specification of manipulatory
tasks (especially assembly tasks) in a world of several arms and
other devices. The following pages contain a description of HAL.